Skip to content

release: v10.13.0 — JP3D K>0 + ROI composition closes the {K, ROI} matrix#449

Merged
SureshKViswanathan merged 1 commit into
mainfrom
v10.13.0-release-candidate
May 24, 2026
Merged

release: v10.13.0 — JP3D K>0 + ROI composition closes the {K, ROI} matrix#449
SureshKViswanathan merged 1 commit into
mainfrom
v10.13.0-release-candidate

Conversation

@SureshKViswanathan

Copy link
Copy Markdown
Contributor

Summary

  • JP3D K>0 + ROI now batchedJP3DROIDecoder(cfg).decode(data, region:) with cfg.resolutionLevel > 0 returns a downsampled sub-volume instead of throwing. Closes v10.12.0's known limitation.
  • Full {K, ROI} matrix now batched — all four cells (K=0+nil, K=0+ROI, K>0+nil, K>0+ROI) route through ONE batched iDWT dispatch.
  • Decoder-only, codestream byte-identical to v10.12.0.

Correctness gate (release mode)

Suite Tests Result
V10_18_TrueSelectiveParityTests (includes new K+ROI oracle) 9/9 PASS
V10_21_BatchedBridgeOptionsParityTests (full-coords K+ROI) 7/7 PASS
V10_20_BatchedBridgeParityTests 5/5 PASS
V10_20_BatchedInverseInt32ParityTests 12/12 PASS
V10_20_JP3DBridgeParityTests 5/5 PASS
swift test --filter JP3D regression 519/519 PASS
J2KMedicalCorpusEncodePerformanceTests 2/2 PASS
J2KMedicalCorpusPerformanceTests 2/2 PASS
J2KStrictCrossCodecValidationTests 3/3 PASS

Test plan

  • Mandatory pre-release gate (encode-perf + decode-perf + cross-codec parity)
  • V10_18 testCombinedResolutionLevelAndROI parity (K=1 + ROI bit-identical to full-partial+crop oracle)
  • V10_21 updated K+ROI composition test (full-coords ROI)
  • JP3D regression sweep (519 tests, no regression)
  • Codestream byte-equality vs v10.12.0 (no encoder change)

Companion documents

  • RELEASE_NOTES_v10.13.0.md — full release notes
  • The multi-week research arc stays on the v10.22-research branch per feedback_research_no_main_merge.md.

🤖 Generated with Claude Code

…trix

v10.12.0 shipped the per-lane batched bridge for K=0+ROI and K>0+nil
but left K>0+ROI as a known limitation. v10.13.0 closes that last
cell by removing both throws (JP3DSliceStackCodec + JP3DROIDecoder)
and making JP3DROIDecoder K-aware end-to-end.

JP3DROIDecoder(cfg).decode(data, region:) with cfg.resolutionLevel > 0
now returns a sub-volume sized
  ceil(region.width / 2^K) × ceil(region.height / 2^K) × region.depth
with voxels bit-identical to JP3DDecoder(cfg).decode(data) cropped to
the downsampled-mapped region.

Four coordinated changes:

  1. Both throws removed. The v10.18 fail-loud guards were Phase 5
     wiring tripwires; v10.13.0 IS that Phase 5 wiring.
  2. JP3DBridgeOptions.regionOfInterest standardised on full-image
     coordinates (matches v10.6 decodeRegion / v10.8 decodePartial).
     Bridge maps region onto the reduced grid for the crop via
     `region / 2^(N − partialResolutionLevel)` (mirrors
     J2KAdvancedDecoding.swift:528-543).
  3. JP3DSliceStackCodec outTileWidth/outTileHeight K-aware — when
     K>0 + ROI, per-slice output shape is
     `ceil(roi.w / 2^K) × ceil(roi.h / 2^K)`.
  4. JP3DROIDecoder K-aware composite — output roiBuffers sized
     downsampled, per-tile composite uses downsampled stride for
     both src and dst. Z stays full (per-slice).

The full {K, ROI} matrix is now batched:
  • (K=0, no ROI)  → batched (v10.11)
  • (K=0,    ROI)  → batched (v10.12)
  • (K>0, no ROI)  → batched (v10.12)
  • (K>0,    ROI)  → batched (v10.13, this commit)

Validation:
  - V10_18_TrueSelectiveParityTests       9/9  PASS
    (testCombinedResolutionLevelAndROI is the new K+ROI parity
     oracle; previously a fail-loud tripwire, now inverted to a
     success-branch check)
  - V10_21_BatchedBridgeOptionsParityTests 7/7  PASS
    (K=4+ROI composition test now uses full-coords ROI:
     J2KRegion(x:32,y:32,w:128,h:128) in 256² source ⇒ output 64×64)
  - V10_20_BatchedBridgeParityTests       5/5  PASS (unchanged)
  - V10_20_BatchedInverseInt32ParityTests 12/12 PASS (unchanged)
  - V10_20_JP3DBridgeParityTests           5/5  PASS (unchanged)
  - `swift test --filter JP3D` regression 519/519 PASS
  - Mandatory commit gate (release mode)   7/7  PASS

Codestream bytes byte-identical to v10.12.0; encoder unchanged.
MINOR per RELEASING.md — no public API removed, no signature
changed; semantics of v10.12.0's JP3DBridgeOptions.regionOfInterest
clarified as full-image coordinates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@SureshKViswanathan SureshKViswanathan merged commit 5e3b712 into main May 24, 2026
13 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant